<%@ page import="com.example.springbootdemo.entity.WecSupplierSpec" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--静态包含--%>
<%--<%@ include file="action.jsp"%>--%>
<%--动态包含--%>
<%--<jsp:include page="htmltest.jsp"/>--%>
<html>
<head>
    <title>Title</title>
    <%
        Date date = new Date();
        out.println(date+"</br>");
        //项目的真实路径(项目在机器的具体位置)
        out.write(config.getServletContext().getRealPath("")+"</br>");
        out.println("<hr>");

    %>

    <%--相当于out.print(2+3)--%>
    <%=2+3+"</br>"%>

    <%!
        String str = "这是一个全局变量";
    %>
    <script>
        var str = "<%=str%>"
        console.log(str)
    </script>

    <%
        //设置属性方式
        pageContext.setAttribute("name","zyb");
        String name = String.valueOf(pageContext.getAttribute("name"));
        out.write("获取设定的属性名称: "+name+"</br>");
        pageContext.removeAttribute("name");
        String name1 = String.valueOf(pageContext.getAttribute("name"));
        out.write("是否清楚属性信息,获取设定的属性名称: "+name1+"</br>");
        out.println("<hr>");
        //给其他域设置属性
        pageContext.setAttribute("password","123456",PageContext.REQUEST_SCOPE);
        String password = String.valueOf(request.getAttribute("password"));
        out.write("request获取属性:" + password+"</br>");
        pageContext.removeAttribute("password",PageContext.REQUEST_SCOPE);
        String password1 = String.valueOf(request.getAttribute("password"));
        out.write("是否移除属性,request获取属性:" + password1+"</br>");
    %>
    <%
        out.println("<hr>");
        WecSupplierSpec wecSupplierSpec = new WecSupplierSpec();
        wecSupplierSpec.setId(1234L);
        wecSupplierSpec.setName("Iphone X");
        request.setAttribute("spec",wecSupplierSpec);

        List<String> list = new ArrayList<>();
        list.add("java");
        list.add("c++");
        list.add("shell");
        list.add("c#");
        list.add("python");
        list.add("javascript");
        request.setAttribute("list",list);
        Map<String, String> map = new HashMap<>();
        map.put("proName1","华为1");
        map.put("proName2","华为2");
        map.put("proName3","华为3");
        request.setAttribute("map",map);
        List<String> list1= new ArrayList<>();
        String string = null;
        request.setAttribute("list1",list1);
        request.setAttribute("string",string);
    %>

    <%
        Cookie age = new Cookie("age", "33");
        age.setMaxAge(60);
        response.addCookie(age);
    %>

</head>
<body>
    <hr>
    <h2>hello jsp</h2>
    <%
        String contextPath = request.getContextPath();
        //${pageContext.request.contextPath}也可以获取路径
        //此处的contestPath为空,原因为使用的是springboot默认的tomcat,所以下面的action直接写controller的路径即可
        //request.getContextPath()是在开发Web项目时，经常用到的方法，其作用是获取当前的系统路径。
        //当使用Tomcat作为Web服务器，项目一般部署在Tomcat下的webapps的目录下。具体来说主要用两种部署的路径：
        //一是将web项目中的webRoot下的文件直接拷贝到webapps/ROOT下（删除ROOT下的原有文件）；
        //另一中方法在Tomcat下的webapps中创建以项目名称命名（当然也可以用其他的名称）的文件夹，并将webRoot下的文件直接拷贝到该文件夹下。
        //对于第一部署方法，request.getContextPath()的返回值为空（即："",中间无空格，注意区分null)。eg:跳转直接写controller路径即可 /jsp
        //对于第二部署方法，其返回值为：/创建的文件夹的名称 eg:跳转需要增加项目路径,再加controller路径, contextPath/jsp
    %>
    <form action="/jsp" method="get">
        用户名 : <input type="text" id="username" name="username" placeholder="请输入用户名" value="${spec.name}"><br>
        密  码 : <input type="text" id="passwd" name="passwd" placeholder="请输入密码" value="${spec.id}"><br>
        <input type="hidden" id="jsp" name="jsp" value="action"><br>
        <input type="submit" value="登录">
    </form>
    <hr>
    ${list[0]}
    ${list[1]}
    ${list[2]}
    <br>
    ${map.proName1}
    ${map.proName2}
    ${map["proName3"]}
    <hr>
    <%--空的字符串,返回true--%>
    ${empty string}
    <%--没有元素的集合,返回true--%>
    ${empty list1}
    ${empty list}
    ${empty map}
    <%--三元运算符--%><br>
    ${empty list ? "空":"非空"}
    ${list[0].equalsIgnoreCase("java")?"是":"非"}
    <br>
    <hr>
    <%--项目路径--%>
    ${pageContext.request.contextPath}<br>
    <%--请求参数--%>
    ${param.jsp}<br>
    <%--获取cookie,以下两种方式都是等价的--%>
    ${cookie.age.value}
    ${cookie["age"].value}
    <hr>
    <%--jstl的使用练习--%>
    设置变量:<c:set scope="request" var="num" value="${5+33}"/><br>
    输出变量:<c:out value="${num}" default="3333"/><br>
    移除变量:<c:remove var="num"/><br>
    移除后输出变量:<c:out value="${num}" default="4444"/><br>
    <%--jstl判断--%>
    <hr>
    <c:if test="${empty list}">
        这个集合为空
    </c:if><br>
    <c:if test="${!empty list}">
        这个集合不为空
    </c:if><br>
    <c:choose>
        <c:when test="${empty list}">
            choose when 方式判断为空
        </c:when>
        <c:when test="${!empty list}">
            choose when 方式判断不为空
        </c:when>
    </c:choose>
    <%--jstl遍历--%>
    <hr>
    <c:forEach var="i" begin="1" end="10" step="2">
        遍历的元素为: ${i}<br>
    </c:forEach>
    <hr>
    <c:forEach items="${list}" var="name" varStatus="vs">
        元素: ${name}<br>
        当前元素: ${vs.current}<br>
        索引: ${vs.index}<br>
        计数: ${vs.count}<br>
        是否第一个元素: ${vs.first}<br>
        是否最后一个元素: ${vs.last}<br>
        <hr>
    </c:forEach>
</body>
</html>
